package thread;

/**
 * Created with IntelliJ IDEA.
 * ClassName: Lazy
 * Package: thread
 * Description:
 * User: fzykd
 *
 * @Author: LQH
 * Date: 2023-10-10
 * Time: 17:36
 */

//单例模式 懒汉模式
public class Lazy {
    //不着急用 使用的时候在new
    //创建对象的操作也不是原子性的 防止指令重排序
    private volatile static Lazy instance = null;

    //构造方法私有话
    private Lazy() {
    }

    //提供一个获取实例的方法
    //这里就存在线程安全问题 多个线程多同一个变量进行修改
    //不是原子性的 加锁
    public static Lazy getInstance() {
        //双重if判断
        if (instance == null) {
            //加锁
            synchronized (Lazy.class) {
                if (instance == null) {
                    instance = new Lazy();
                }
            }
        }
        return instance;
    }
}
